package org.openanypcao.cs.service;

import java.io.File;

/**
 * 
 *作者：曹正标</p>
 *日期：2011-12-29</p>
 *功能：实验管理器</p>
 */
public interface IExpManager {
	
	/**
	 * 
	 * 作  者：曹正标</p>
	 * 功  能：登录到系统</p>
	 * 参  数：</p>
	 * @param account	：帐号</p>
	 * @param password	：密码</p>
	 * 返回值：</p>
	 * @return String	：用户信息XML字符串</p>
	 * 使用示例：</p>
	 * ##给一个使用示例及返回XML具体格式</p>
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String login(String account, String password);
	

	/**
	 * 
	 * 作  者：曹正标</p>
	 * 功  能：获取实验列表XML</p>
	 * 参  数：</p>
	 * @param studentId	:学生ID
	 * 返回值：</p>
	 * @return String ：实验列表XML</p>
	 * 使用示例：</p>
	 * ##给出一个使用示例及返回XML具体格式</p>
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String getExps(String studentId);
	

	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：返回教师已经安排的学年、学期</p>
	 * 参  数：</p>
	 * @param teacherId	：教师ID</p>
	 * 返回值：</p>
	 * @return void
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String teacherGrades(String teacherId);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：返回教师已经安排的某个学年、学期下的实验列表</p>
	 * 参  数：</p>
	 * @param teacherId	：教师ID</p>
	 * @param grade	：学年</p>
	 * @param term	：学期</p>
	 * 返回值：</p>
	 * @return 
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String teacherExps(String teacherId, String grade, String term);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：返回班级下的学生列表</p>
	 * 参  数：</p>
	 * @param classId：班级ID</p>
	 * 返回值：</p>
	 * @return 
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String expStudents(String classId);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：学生提交实验结果</p>
	 * 参  数：</p>
	 * @param expId	：实验ID</p>
	 * @param studentId：学生ID</p>
	 * @param outcome：学生实验结果</p>
	 * 返回值：字符串SUCCESS</p>
	 * @return 
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String commitOutcome(String expId, String studentId, String outcome);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：返回学生实验结果信息</p>
	 * 参  数：</p>
	 * @param expId	：实验ID</p>
	 * @param studentId：学生ID</p>
	 * 返回值：</p>
	 * @return 学生实验脚本，如果学生未提交返回“未提交”
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String studentOutcome(String expId, String studentId);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：教师批改实验</p>
	 * 参  数：</p>
	 * @param expId	：实验ID</p>
	 * @param studentId：学生ID</p>
	 * @param score：成绩</p>
	 * @param remark：评语</p>
	 * 返回值：</p>
	 * @return 
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	String commitCorrect(String expId, String studentId, double score, String remark);
	
	/**
	 * 
	 * 作  者：曹正标<</p>
	 * 功  能：下载文件</p>
	 * 参  数：</p>
	 * @param srcPath	：源地址(##源地址格式啥样？)</p>
	 * @param destPath	：目标地址(##目标地址格式啥样？)</p>
	 * 返回值：</p>
	 * @return void
	 * 修改记录： </p>
	 * 修改日期：</p>
	 * 修改人：</p>
	 * 修改概述：</p>
	 */
	void downloadExpFile(String srcPath, String destPath);
}
